﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace ConsoleApplication1
{
    class RobS1:Robot
    {
        public RobS1()
        {
            this.Tipo = "S1";
        }

        public override void Pintar(Laberinto lab, List<Bitmap> imagenesTodas)
        {
            int pinto = 1;
            Celda celdaAtual = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]];
            int[] colorActual = new int[]{imagenesTodas[this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).R,
                imagenesTodas[this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).G,
                imagenesTodas[this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).B};
            celdaAtual.ColoresRespuesta.Add(colorActual);
            if (Salida == "U")
            {

                while (celdaAtual != lab.GoalUp)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorUp;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "D")
            {

                while (celdaAtual != lab.GoalDown)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorDown;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//{ celdaAtual.ColoresRespuesta.Add(colorActual); }
                }
            }
            else if (Salida == "L")
            {

                while (celdaAtual != lab.GoalLeft)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorLeft;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//{ celdaAtual.ColoresRespuesta.Add(colorActual); }
                }
            }
            else if (Salida == "R")
            {

                while (celdaAtual != lab.GoalRight)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorRight;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//{ celdaAtual.ColoresRespuesta.Add(colorActual); }
                }
            }
            else if (Salida == "F")
            {

                while (celdaAtual != lab.GoalFront)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorFront;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//{ celdaAtual.ColoresRespuesta.Add(colorActual); }
                }
            }
            else if (Salida == "B")
            {

                while (celdaAtual != lab.GoalBack)
                {
                    pinto++;
                    celdaAtual = celdaAtual.PredecesorBack;
                    if (pinto % 3 == 1)
                    {
                        celdaAtual.SumColores[0] += colorActual[0];
                        celdaAtual.SumColores[1] += colorActual[1];
                        celdaAtual.SumColores[2] += colorActual[2];
                        celdaAtual.NumColores++;
                    }//{ celdaAtual.ColoresRespuesta.Add(colorActual); }
                }
            }
        }
    }
}
